home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / PROGRAM / SCLIB.ARJ / SCL1SAMP.EXE / BACKGRND.C next >
C/C++ Source or Header  |  1992-01-01  |  2KB  |  116 lines

  1. #include <process.h>
  2. #include <stdlib.h>
  3. #include <errno.h>
  4. #include <scl1.h>
  5. #include <scl1clor.h>
  6.  
  7. /***************************************************************
  8.    BackgroundOn/Off example. Displays a clock in the screen top
  9.    right corner */
  10.  
  11. int hours,minutes,seconds;
  12. char buffer[12];
  13.  
  14. int BackClock(void);
  15.  
  16. main()
  17. {
  18. char *p;
  19.  
  20. Cls(WHITE_BLACK,CLS_ALL);
  21.  
  22. GetTime();
  23. hours=GT_Hours;
  24. minutes=GT_Minutes;
  25. seconds=GT_Seconds;
  26.  
  27. SetCurPos(2,0);
  28. printf("A background clock will be active until you type EXIT\n");
  29.  
  30. BackgroundOn(BackClock);    /* set background function */
  31.  
  32. p=getenv("COMSPEC");
  33.  
  34.     /* run command.com */
  35.  
  36. if(p)
  37.     {
  38.     if(spawnl(P_WAIT,p,0))
  39.         {
  40.         if(errno == ENOMEM)
  41.             printf("\nNot enough memory to load COMMAND.COM\n");
  42.         else
  43.             printf("\nUnable to load COMMAND.COM\n");
  44.         }
  45.     }
  46. else
  47.     printf("\nEnvironment Variable COMPSEC not found\n");
  48.  
  49. BackgroundOff();    /* stop background process */
  50.  
  51. ClearKeyBuf();
  52. }
  53.  
  54. #pragma check_stack(off)
  55.  
  56.     /* this function will be called 18.2 per second */
  57.  
  58. int BackClock(void)
  59. {
  60. int i;
  61. static int count=18;
  62.  
  63.     /* count variable is used to keep track of time. When count == 18 
  64.        a second has elpased  */
  65.  
  66. if(count==18)
  67.     {
  68.     ++seconds;
  69.     if(seconds == 60)
  70.         {
  71.         seconds=0;
  72.         ++minutes;
  73.         if(minutes == 60)
  74.             {
  75.             minutes=0;
  76.             ++hours;
  77.             if(hours == 24)
  78.                 hours=0;
  79.             }
  80.         }
  81.  
  82.     i=0;
  83.  
  84.     /* convert hours/minutes/seconds values to ASCII */
  85.  
  86.     if(hours < 10)
  87.         buffer[i++]='0';
  88.  
  89.     itoa(hours,buffer+i,10);
  90.  
  91.     i=3;
  92.  
  93.     if(minutes < 10)
  94.         buffer[i++]='0';
  95.  
  96.     itoa(minutes,buffer+i,10);
  97.  
  98.     i=6;
  99.     if(seconds < 10)
  100.         buffer[i++]='0';
  101.  
  102.     itoa(seconds,buffer+i,10);
  103.  
  104.     buffer[2]=':';
  105.     buffer[5]=':';
  106.  
  107.     count=0;
  108.     }
  109.  
  110. else
  111.     ++count;
  112.  
  113. Box(BLACK_WHITE,0,0,69,2,78);
  114. WriteScreen(BLACK_WHITE,1,70,buffer);
  115. }
  116.